package view;

import data.*;
import java.awt.*;

/**
 * 坦克绘制视图类 - 纯界面绘制，不涉及数据和逻辑
 */
public class TankView {
    // -------------------- view --------------------

    /**
     * 功能: 绘制坦克
     * 根据坦克类型和方向绘制不同外观
     * 参数:
     *   g: Graphics绘图对象
     *   tank: 坦克数据
     * 返回值: void
     */
    public void drawTank(Graphics g, TankData tank) {
        if (tank.getState() != 1) return;

        // 设置颜色
        if (tank.getTankKind() == 0) {
            g.setColor(Color.YELLOW); // 我方坦克-黄色
        } else {
            g.setColor(Color.CYAN); // 敌方坦克-青色
        }

        // 绘制坦克主体
        g.fillRect(tank.getX(), tank.getY(), 40, 40);

        // 绘制坦克轮廓
        g.setColor(Color.BLACK);
        g.drawRect(tank.getX(), tank.getY(), 40, 40);

        // 绘制炮管
        g.setColor(Color.DARK_GRAY);
        int centerX = tank.getX() + 20;
        int centerY = tank.getY() + 20;

        switch (tank.getDirection()) {
            case 0: // 上
                g.fillRect(centerX - 2, tank.getY() - 10, 4, 15);
                break;
            case 1: // 右
                g.fillRect(tank.getX() + 35, centerY - 2, 15, 4);
                break;
            case 2: // 下
                g.fillRect(centerX - 2, tank.getY() + 35, 4, 15);
                break;
            case 3: // 左
                g.fillRect(tank.getX() - 10, centerY - 2, 15, 4);
                break;
        }

        // 绘制血量条
        if (tank.getHp() < 100) {
            drawHealthBar(g, tank);
        }
    }

    /**
     * 功能: 绘制血量条
     * 参数:
     *   g: Graphics绘图对象
     *   tank: 坦克数据
     * 返回值: void
     */
    private void drawHealthBar(Graphics g, TankData tank) {
        int barWidth = 40;
        int barHeight = 5;
        int barX = tank.getX();
        int barY = tank.getY() - 8;

        // 背景
        g.setColor(Color.RED);
        g.fillRect(barX, barY, barWidth, barHeight);

        // 血量
        g.setColor(Color.GREEN);
        int healthWidth = (int)(barWidth * (tank.getHp() / 100.0));
        g.fillRect(barX, barY, healthWidth, barHeight);

        // 边框
        g.setColor(Color.BLACK);
        g.drawRect(barX, barY, barWidth, barHeight);
    }
    // -------------------- view --------------------
}